// 多项式输出
#include <iostream>
#include <string>
using namespace std;
int n;

int main()
{
    cin >> n;
    string ret = "";
    // for(int i = 0;i <= n;i++)
    // {
    //     int x;
    //     cin >> x;
    //     if(i == n)
    //     {
    //         if(x > 0) ret += "+" + to_string(x);
    //         else if(x == 0) continue;
    //         else ret += to_string(x);

    //         continue;
    //     }
    //     if(x == 0) continue;
    //     if(x > 0 && ret == "")
    //     {
    //         if(x != 1) ret += to_string(x) + "x^" + to_string(n - i);
    //         else ret += "x^" + to_string(n - i);
    //         continue;
    //     }
    //     if(x > 0 && ret != "")
    //     {
    //         if(x != 1) ret += "+" + to_string(x) + "x^" + to_string(n - i);
    //         else ret += "+x^" + to_string(n - i);
    //         continue;
    //     }
    //     if(x < 0)
    //     {
    //         if(x != -1) ret += to_string(x) + "x^" + to_string(n - i);
    //         else ret += "-x^" + to_string(n - i);
    //     }
    // }

    // 看分析后的解答
    // 分析后发现每一项由(符号+数+次数)组成

    for(int i = n;i >= 0;i--)
    {
        int x;
        cin >> x;
        // 符号
        if(x < 0) ret += "-";
        else if(x > 0)
        {
            if(i == n) ret += "";
            else ret += "+";
        }
        else continue;

        // 数
        int t = abs(x);
        if(t == 1)
        {
            if(i == 0) ret += "1";
            else ret += "";
        }
        else ret += to_string(t);

        // 次数
        if(i == 0) ret += "";
        else if(i == 1) ret += "x";
        else ret += "x^" + to_string(i);
    }

    cout << ret << endl;
    return 0;
}